home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / COMAL / cboot.d64 / comal'dump.asm < prev    next >
Assembly Source File  |  2009-01-23  |  5KB  |  251 lines

  1. ; HIGH-RES SCREEN DUMP ROUTINE
  2. ; V4.0  4/18/84  (C) W. LOUIE
  3. ; FOR USE WITH C64 COMAL 0.14
  4. ; AND EPSON MX-80 W/GRAFTRAX.
  5. ;
  6. ; ASSEMBLE IN HIGH RAM [$C000].
  7. ; [ SYS 49152 ]  TO DUMP SCREEN.
  8. ; PRESS POUND KEY TO ABORT DUMP.
  9. ;
  10. ; HIGH-RES SCREEN MAY BE DUMPED
  11. ; AT ANY TIME.  BIT-MAP SCREEN
  12. ; IMAGE LIES UNTOUCHED BELOW
  13. ; SYSTEM ROM AT [$E000].
  14. ;
  15. ;
  16. ; KERNAL / SYSTEM EQUATES
  17. SCNKEY   =   $FF9F
  18. SETLFS   =   $FFBA
  19. SETNAM   =   $FFBD
  20. OPEN     =   $FFC0
  21. CLOSE    =   $FFC3
  22. CHKOUT   =   $FFC9
  23. CHROUT   =   $FFD2
  24. CLALL    =   $FFE7
  25. GETIN    =   $FFE4
  26. TIMER    =   $DC0E
  27. BUFFER   =   $CE00
  28. PRTPAT   =   $CFF0
  29. ADDR1    =   $CFFA
  30. ADDR2    =   $CFFB
  31. ROW      =   $CFFC
  32. COL      =   $CFFD
  33. TEMP1    =   $CFFE
  34. TEMP2    =   $CFFF
  35. ;
  36. ; ZERO PAGE LOCATIONS
  37. BITMAP   =   $8B
  38. MAPHI    =   $8C
  39. BUFR     =   $8D
  40. BUFHI    =   $8E
  41. FLAG     =   $8F
  42. ;
  43. ; ASSEMBLE IN HIGH RAM
  44.         *=   $C000
  45. ;
  46. ; DISABLE INTERRUPTS
  47.         LDA  TIMER
  48.         STA  TEMP2
  49.         AND  #$FE
  50.         STA  TIMER
  51. ; OPEN THE PRINTER [ OPEN4,4 ]
  52.         LDA  #$04
  53.         TAX
  54.         LDY  #$FF
  55.         JSR  SETLFS
  56.         LDA  #$00
  57.         TAX
  58.         TAY
  59.         JSR  SETNAM
  60.         JSR  OPEN
  61.         LDX  #$04
  62.         JSR  CHKOUT
  63. ; SET UP FOR 4 DOT LINE SPACING
  64.         LDA  #$1B
  65.         JSR  CHROUT
  66.         LDA  #$41
  67.         JSR  CHROUT
  68.         LDA  #$04
  69.         JSR  CHROUT
  70. ; SCREEN BIT MAP LOCATION - $E000
  71.         LDA  #$00
  72.         STA  BITMAP
  73.         STA  ADDR1
  74.         STA  ROW
  75.         LDA  #$E0
  76.         STA  MAPHI
  77.         STA  ADDR2
  78. ; BUFFER LOCATION - $CE00
  79. NEWROW  LDA  #$00
  80.         STA  BUFR
  81.         LDA  #$CE
  82.         STA  BUFHI
  83. ; SET FLAG TO ZERO
  84.         LDA  #$00
  85.         STA  FLAG
  86. ; SET COLUMN COUNT TO ZERO
  87.         STA  COL
  88. ; LOAD BUFFER WITH 1 ROW
  89. ;
  90. ; SAVE 6510 I/O REGISTER AND
  91. ; DISABLE EVERYTHING TO ALLOW
  92. ; RAM TO BE READ INSTEAD OF ROM
  93.         LDA  $01
  94.         STA  TEMP1
  95.         LDA  #$00
  96.         STA  $01
  97. ;
  98. LOAD    LDY  #$07
  99. VICROW  LDA  (BITMAP),Y
  100.         LDX  #$00
  101. EPSCOL  ASL  A
  102.         ROR  PRTPAT,X
  103.         INX
  104.         CPX  #$08
  105.         BCC  EPSCOL
  106.         DEY
  107.         BPL  VICROW
  108. ; MOVE PRTPAT TO BUFFER
  109.         LDY  #$00
  110. MOVE    LDA  PRTPAT,Y
  111.         STA  (BUFR),Y
  112.         INY
  113.         CPY  #$08
  114.         BNE  MOVE
  115. ; INCREMENT BUFFER INDEX BY 8
  116.         CLC
  117.         LDA  BUFR
  118.         ADC  #$08
  119.         STA  BUFR
  120.         LDA  BUFHI
  121.         ADC  #$00
  122.         STA  BUFHI
  123. ; INCREMENT BIT MAP INDEX BY 8
  124.         CLC
  125.         LDA  BITMAP
  126.         ADC  #$08
  127.         STA  BITMAP
  128.         LDA  MAPHI
  129.         ADC  #$00
  130.         STA  MAPHI
  131. ; INCREMENT COLUMN COUNT
  132.         INC  COL
  133. ; FINISHED WITH ROW <40 CHAR.> ?
  134.         LDA  COL
  135.         CMP  #$28
  136.         BNE  LOAD
  137. ; BUFR NOW CONTAINS A ROW IN
  138. ; THE EPSON COLUMN FORMAT.
  139. ;
  140. ; ENABLE SYSTEM ROM AGAIN
  141.         LDA  TEMP1
  142.         STA  $01
  143. ;
  144. ;
  145. ; CENTER OUTPUT WITH 13 SPACES
  146. PRINT   LDX  #$00
  147.         LDA  #$20
  148. PADOUT  JSR  CHROUT
  149.         INX
  150.         CPX  #$0D
  151.         BNE  PADOUT
  152. ; SET UP PRINTER FOR GRAPHICS MODE
  153. ; 8 COL/CHAR X 40 CHAR = 320 COL
  154.         LDA  #$1B
  155.         JSR  CHROUT
  156.         LDA  #$4B
  157.         JSR  CHROUT
  158.         LDA  #$40
  159.         JSR  CHROUT
  160.         LDA  #$01
  161.         JSR  CHROUT
  162. ; SEND BUFFER TO PRINTER
  163.         LDX  #$00
  164. OUT1    LDA  BUFFER,X
  165.         JSR  SENDIT
  166.         INX
  167.         CPX  #$A0
  168.         BNE  OUT1
  169.         LDX  #$00
  170. OUT2    LDA  BUFFER+$A0,X
  171.         JSR  SENDIT
  172.         INX
  173.         CPX  #$A0
  174.         BNE  OUT2
  175. ; DUMP PRINTER BUFFER WITH CR.
  176.         LDA  #$0D
  177.         JSR  CHROUT
  178. ; POUND KEY PRESSED ?
  179.         JSR  SCNKEY
  180.         JSR  GETIN
  181.         CMP  #$5C
  182. ; YES, ABORT SCREEN DUMP
  183.         BEQ  QUIT
  184. ; PRINT BOTTOM DOTS ?
  185.         LDA  FLAG
  186.         CMP  #$FF
  187.         BEQ  NEXT
  188.         LDA  #$FF
  189.         STA  FLAG
  190.         JMP  PRINT
  191. ; INCREMENT ROW COUNT
  192. NEXT    INC  ROW
  193. ; DUMPED ALL 25 ROWS ?
  194.         LDA  ROW
  195.         CMP  #$19
  196.         BEQ  QUIT
  197. ; INCREMENT BIT MAP INDEX BY 320
  198.         CLC
  199.         LDA  ADDR1
  200.         ADC  #$40
  201.         STA  ADDR1
  202.         STA  BITMAP
  203.         LDA  ADDR2
  204.         ADC  #$01
  205.         STA  ADDR2
  206.         STA  MAPHI
  207. ; GET THE NEXT ROW
  208.         JMP  NEWROW
  209. ;
  210. ; END OF DUMP ROUTINE
  211. ;
  212. ; RESET PRINTER MODE
  213. QUIT    LDA  #$1B
  214.         JSR  CHROUT
  215.         LDA  #$40
  216.         JSR  CHROUT
  217.         LDA  #$0D
  218.         JSR  CHROUT
  219. ; CLOSE 4,4 - RESET I/O CHANNELS
  220.         LDA  #$04
  221.         JSR  CLOSE
  222.         JSR  CLALL
  223. ; ENABLE INTERRUPTS
  224.         LDA  TEMP2
  225.         STA  TIMER
  226. ; RETURN TO COMAL
  227.         RTS
  228. ;
  229. ;
  230. ;
  231. ; SEND COLUMN TO PRINTER ROUTINE
  232. SENDIT  LDY  FLAG
  233.         CPY  #$FF
  234.         BEQ  LOWER
  235. ; SEND UPPER 4 DOTS
  236.         ROR  A
  237.         ROR  A
  238.         ROR  A
  239.         ROR  A
  240. ; SEND LOWER 4 DOTS
  241. LOWER   AND  #$0F
  242.         JSR  CHROUT
  243. ; DELAY LOOP, COUNT TO 255
  244.         LDY  #$00
  245. WAIT    INY
  246.         CPY  #$FF
  247.         BNE  WAIT
  248.         RTS
  249. ;
  250.        .END
  251.